package com.dxf.chepter02

/**
 * 赋值运算符
 * <<=             C <<=  2   -->  C = C << 2
 * >>=             C  >>= 2   -->  C =C >> 2
 * &=              C &= 2   -->    C =C & 2
 * ^=              C ^= 2   -->    C =C ^ 2           异或      两个位相同为0，相异为1
 * !=              C |= 2   -->    C =C | 2           或         两个位都为0时，结果才为0
 *
 *
 *
 *
 */
object T15_赋值运算符 {
  def main(args: Array[String]): Unit = {

    var num = 2
    num <<= 2
    // num >>= 3
    println(num)

    //    var num: Char = 127;
    //    num =(num+1).toChar
    //    println(num)
    //scala 支持代码块,返回值
    val res = {
      if (num > 1) "hello,ok" else 100
    }
    println(res)
    println(res.getClass)


    //a b 变量交换,不通过中间变量
    var a = 1
    var b = 3
    //一
    //    a = a + b
    //    b = a - b //(a+b)- b = a
    //    a = a - b //(a+b)- a = b
    //    println(a,b)
    //二 位运算

    //猜想 公式    ^  异或  两个位相同为0，相异为1
    // a= a ^ b
    // b= b ^ a
    // a =a ^ b

    // a= 01010
    // b= 10100
    // r= 11110
    // a = a ^ b = 11110   ---> 30
    // b = b ^ a = 11110   ---> 30
    // a = a ^ b =
    //    println(a^b)
    //    println(5^18)
    //    println(5^9^5^5)
    //    // 111 =  7   //11 = 3
    //
    //    println(7^3)
    a = a ^ b //1 ^ 3 = xx
    b = b ^ a // 3^ (1 ^ 3) =1
    a = a ^ b // (1 ^ 3) ^ (1) = 3
    println(a, b)
    println(10^20)

    //推导出 异或计算公式 a ^ b ^ a = b 或者 b ^ b ^ a  = a







  }
}
